package sxd.dao;
import java.util.List;

import org.beetl.sql.core.annotatoin.Sql;
import org.beetl.sql.core.annotatoin.SqlStatement;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.mapper.BaseMapper;

import sxd.pojo.User;
import sxd.pojo.User.Gender;

/*
* 
* gen by beetlsql mapper 2016-09-08
*/
public interface UserDao extends BaseMapper<User> {
	/**
	 * 自动调用 user.md 中的  queryWithDept 这一块的代码
	 * @return
	 */
	public User queryWithDept();
	
	/**
	 * 直接注解使用sql 不通过md文件
	 * @param gender
	 * @return
	 */
	@Sql("select * from user where gender = ?")
	public List<User> queryUserByGender(Gender gender);
	
	/**
	 * 单独查询一个字段 可以直接封装成要的类型而不必须是对象
	 * @param gender
	 * @return
	 */
	@Sql(value="select name from user where gender = ?",returnType=String.class)
	public List<String> queryUserNameByGender(Gender gender);
	
	
	/**
	 * 使用 user.md 文件中的 queryUser 来分页查询
	 * 因为额外查询了一个部门名称字段，多余的字段会放在 tails 对象里面
	 * @param query
	 */
	@SqlStatement(returnType=User.class)
	public void queryUser(PageQuery query);
	
	/**
	 * 使用user.md文件中的 queryUserCountByDept 来查询 Integer类型的值
	 * @param deptid
	 * @return
	 */
	@SqlStatement(params="deptid",returnType=Integer.class)//注解中的params中的参数列表对应方法的参数，名称对应md文件的参数名称
	public Integer queryUserCountByDept(Integer did);
}
